package main

import "fmt"

func main02() {
	//切片的定义和使用
	var s []int = make([]int, 3)
	s[0] = 123
	fmt.Println(s)

	var sli []int
	//使用append对切片扩容
	//切片扩容为偶数的值，小于1024 为上一次的两倍，大于1024为上一次的1/4
	sli = append(sli, 1, 2)

	fmt.Println(len(sli)) //计算切片的长度
	fmt.Println(cap(sli)) //计算切片的容量
	fmt.Println(sli)
}

func main03() {
	//切片的截取
	sli := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

	//切片名[起始下标：结束下标：容量]
	//注意他是左闭右开的截取方式（包含起始下标的值，不包含结束下标的值）
	s := sli[2:6]
	//切片的截取 是将新的切片指向原切片的内存地址
	s[2] = 4444
	fmt.Println(sli)
	fmt.Println(s)
}

func main() {
	sli := []int{1, 2, 3, 4, 5}

	//在内存存储两个内容完全相同，但是不会互相影响
	s := make([]int, 5)

	//拷贝sli到s
	copy(s, sli)

	s[0] = 333
	fmt.Println(s)
	fmt.Println(sli)
}
